Encryption of memory in a device, such as a personal computer, a smart mobile phone, etc., may be used to protect data stored in the memory when the device is operating, lost, stolen, etc. Encryption of the memory may, however, remain vulnerable since the data may be corrupted by an adversary via an initial and/or a repeated memory corruption attack. Moreover, data stored in the memory may become corrupt as a result of normal operation and/or the passage of time. Thus, a processor may execute corrupt data and cause an array of undesirable effects such as, for example, a password login attempt to erroneously succeed, fail, etc., an application to misbehave, crash, etc., the device to misbehave, crash, etc.
While being an in-line approach and having a relatively low storage cost, parity may be deterministic insofar as the adversary may successfully guess how to change bits of stored data to pass a check. Moreover, relatively large codes to verify the integrity of stored data may not be deterministic to the adversary but may include relatively high storage cost. Additionally, integrity actions may include reverting to a previous state prior to an error, which may be a burden on computational resources or may cause uncorrupted data to be lost. In addition, a wide array of attacks to data stored in the memory may not be detectable and/or correctable.